/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.sigu.entities;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Type;

/**
 *
 * @author Usuario2
 */
@Entity
@Table(name = "aca_periodos" , catalog= "sigu")
@NamedQueries({
    @NamedQuery(name = "Periodos.findAll", query = "SELECT p FROM Periodos p"),
    @NamedQuery(name = "Periodos.findByInstitucion", query = "SELECT p FROM Periodos p WHERE p.periodosPK.institucion = :institucion"),
    @NamedQuery(name = "Periodos.findByPeriodo", query = "SELECT p FROM Periodos p WHERE p.periodosPK.periodo = :periodo"),
    @NamedQuery(name = "Periodos.findByOrden", query = "SELECT p FROM Periodos p WHERE p.orden = :orden"),
    @NamedQuery(name = "Periodos.findByDescripcion", query = "SELECT p FROM Periodos p WHERE p.descripcion = :descripcion"),
    @NamedQuery(name = "Periodos.findByAbreviatura", query = "SELECT p FROM Periodos p WHERE p.abreviatura = :abreviatura"),
    @NamedQuery(name = "Periodos.findByFechaDesde", query = "SELECT p FROM Periodos p WHERE p.fechaDesde = :fechaDesde"),
    @NamedQuery(name = "Periodos.findByFechaHasta", query = "SELECT p FROM Periodos p WHERE p.fechaHasta = :fechaHasta"),
    @NamedQuery(name = "Periodos.findByFechaDesdeMat", query = "SELECT p FROM Periodos p WHERE p.fechaDesdeMat = :fechaDesdeMat"),
    @NamedQuery(name = "Periodos.findByFechaHastaMat", query = "SELECT p FROM Periodos p WHERE p.fechaHastaMat = :fechaHastaMat"),
    @NamedQuery(name = "Periodos.findByFechaDesdeCon", query = "SELECT p FROM Periodos p WHERE p.fechaDesdeCon = :fechaDesdeCon"),
    @NamedQuery(name = "Periodos.findByFechaHastaCon", query = "SELECT p FROM Periodos p WHERE p.fechaHastaCon = :fechaHastaCon"),
    @NamedQuery(name = "Periodos.findByFechaActaFinal", query = "SELECT p FROM Periodos p WHERE p.fechaActaFinal = :fechaActaFinal"),
    @NamedQuery(name = "Periodos.findByFechaFichaTec", query = "SELECT p FROM Periodos p WHERE p.fechaFichaTec = :fechaFichaTec"),
    @NamedQuery(name = "Periodos.findByFechaAdmision", query = "SELECT p FROM Periodos p WHERE p.fechaAdmision = :fechaAdmision"),
    @NamedQuery(name = "Periodos.findByFechaCingreso", query = "SELECT p FROM Periodos p WHERE p.fechaCingreso = :fechaCingreso"),
    @NamedQuery(name = "Periodos.findByFechaDesdeRes", query = "SELECT p FROM Periodos p WHERE p.fechaDesdeRes = :fechaDesdeRes"),
    @NamedQuery(name = "Periodos.findByFechaHastaRes", query = "SELECT p FROM Periodos p WHERE p.fechaHastaRes = :fechaHastaRes"),
    @NamedQuery(name = "Periodos.findByCoPeriodo", query = "SELECT p FROM Periodos p WHERE p.coPeriodo = :coPeriodo"),
    @NamedQuery(name = "Periodos.findByPeriodoAnterior", query = "SELECT p FROM Periodos p WHERE p.periodoAnterior = :periodoAnterior"),
    @NamedQuery(name = "Periodos.findByPeriodoSiguiente", query = "SELECT p FROM Periodos p WHERE p.periodoSiguiente = :periodoSiguiente"),
    @NamedQuery(name = "Periodos.findByMes01", query = "SELECT p FROM Periodos p WHERE p.mes01 = :mes01"),
    @NamedQuery(name = "Periodos.findByMes02", query = "SELECT p FROM Periodos p WHERE p.mes02 = :mes02"),
    @NamedQuery(name = "Periodos.findByMes03", query = "SELECT p FROM Periodos p WHERE p.mes03 = :mes03"),
    @NamedQuery(name = "Periodos.findByMes04", query = "SELECT p FROM Periodos p WHERE p.mes04 = :mes04"),
    @NamedQuery(name = "Periodos.findByAnrPeriodo", query = "SELECT p FROM Periodos p WHERE p.anrPeriodo = :anrPeriodo"),
    @NamedQuery(name = "Periodos.findByResolucionPdi", query = "SELECT p FROM Periodos p WHERE p.resolucionPdi = :resolucionPdi"),
    @NamedQuery(name = "Periodos.findByOrdinario", query = "SELECT p FROM Periodos p WHERE p.ordinario = :ordinario"),
    @NamedQuery(name = "Periodos.findByActivo", query = "SELECT p FROM Periodos p WHERE p.activo = :activo"),
    @NamedQuery(name = "Periodos.findByCreacionUsuario", query = "SELECT p FROM Periodos p WHERE p.creacionUsuario = :creacionUsuario"),
    @NamedQuery(name = "Periodos.findByCreacionEstacion", query = "SELECT p FROM Periodos p WHERE p.creacionEstacion = :creacionEstacion"),
    @NamedQuery(name = "Periodos.findByCreacionFecha", query = "SELECT p FROM Periodos p WHERE p.creacionFecha = :creacionFecha"),
    @NamedQuery(name = "Periodos.findByControlUsuario", query = "SELECT p FROM Periodos p WHERE p.controlUsuario = :controlUsuario"),
    @NamedQuery(name = "Periodos.findByControlEstacion", query = "SELECT p FROM Periodos p WHERE p.controlEstacion = :controlEstacion"),
    @NamedQuery(name = "Periodos.findByControlFecha", query = "SELECT p FROM Periodos p WHERE p.controlFecha = :controlFecha"),
    @NamedQuery(name = "Periodos.findByFechaHastaAdm", query = "SELECT p FROM Periodos p WHERE p.fechaHastaAdm = :fechaHastaAdm"),
    @NamedQuery(name = "Periodos.findByFechaDesdeAdm", query = "SELECT p FROM Periodos p WHERE p.fechaDesdeAdm = :fechaDesdeAdm")})
public class Periodos implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected PeriodosPK periodosPK;
    @Basic(optional = false)
    @Column(name = "orden")
    private int orden;
    @Basic(optional = false)
    @Column(name = "descripcion")
    private String descripcion;
    @Column(name = "abreviatura")
    private String abreviatura;
    @Column(name = "fecha_desde")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaDesde;
    @Column(name = "fecha_hasta")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaHasta;
    @Column(name = "fecha_desde_mat")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaDesdeMat;
    @Column(name = "fecha_hasta_mat")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaHastaMat;
    @Column(name = "fecha_desde_con")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaDesdeCon;
    @Column(name = "fecha_hasta_con")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaHastaCon;
    @Column(name = "fecha_acta_final")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaActaFinal;
    @Column(name = "fecha_ficha_tec")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaFichaTec;
    @Column(name = "fecha_admision")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaAdmision;
    @Column(name = "fecha_cingreso")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCingreso;
    @Column(name = "fecha_desde_res")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaDesdeRes;
    @Column(name = "fecha_hasta_res")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaHastaRes;
    @Column(name = "co_periodo")
    private Integer coPeriodo;
    @Column(name = "periodo_anterior")
    private String periodoAnterior;
    @Column(name = "periodo_siguiente")
    private String periodoSiguiente;
    @Column(name = "mes01")
    private String mes01;
    @Column(name = "mes02")
    private String mes02;
    @Column(name = "mes03")
    private String mes03;
    @Column(name = "mes04")
    private String mes04;
    @Column(name = "anr_periodo")
    private String anrPeriodo;
    @Column(name = "resolucion_pdi")
    private String resolucionPdi;
    @Column(name = "ordinario")
    private Boolean ordinario;

    @Column(name = "activo" ,  columnDefinition = "BIT", length=1 )
    private String activo;
    @Column(name = "creacion_usuario")
    private String creacionUsuario;
    @Column(name = "creacion_estacion")
    private String creacionEstacion;
    @Column(name = "creacion_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date creacionFecha;
    @Column(name = "control_usuario")
    private String controlUsuario;
    @Column(name = "control_estacion")
    private String controlEstacion;
    @Column(name = "control_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date controlFecha;
    @Column(name = "fecha_hasta_adm")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaHastaAdm;
    @Column(name = "fecha_desde_adm")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaDesdeAdm;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "periodos")
    private Collection<CarrerasCreditos> carrerasCreditosCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "periodos")
    private Collection<PeriodosSecciones> periodosSeccionesCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "periodos")
    private Collection<CursosCarreras> cursosCarrerasCollection;
    @JoinColumn(name = "institucion", referencedColumnName = "institucion", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Institucion institucion1;
    @JoinColumn(name = "estado_registro", referencedColumnName = "estado_registro")
    @ManyToOne
    private EstadoRegistros estadoRegistros;

    public Periodos() {
    }

    public Periodos(PeriodosPK periodosPK) {
        this.periodosPK = periodosPK;
    }

    public Periodos(PeriodosPK periodosPK, int orden, String descripcion) {
        this.periodosPK = periodosPK;
        this.orden = orden;
        this.descripcion = descripcion;
    }

    public Periodos(int institucion, String periodo) {
        this.periodosPK = new PeriodosPK(institucion, periodo);
    }

    public PeriodosPK getPeriodosPK() {
        return periodosPK;
    }

    public void setPeriodosPK(PeriodosPK periodosPK) {
        this.periodosPK = periodosPK;
    }

    public int getOrden() {
        return orden;
    }

    public void setOrden(int orden) {
        this.orden = orden;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getAbreviatura() {
        return abreviatura;
    }

    public void setAbreviatura(String abreviatura) {
        this.abreviatura = abreviatura;
    }

    public Date getFechaDesde() {
        return fechaDesde;
    }

    public void setFechaDesde(Date fechaDesde) {
        this.fechaDesde = fechaDesde;
    }

    public Date getFechaHasta() {
        return fechaHasta;
    }

    public void setFechaHasta(Date fechaHasta) {
        this.fechaHasta = fechaHasta;
    }

    public Date getFechaDesdeMat() {
        return fechaDesdeMat;
    }

    public void setFechaDesdeMat(Date fechaDesdeMat) {
        this.fechaDesdeMat = fechaDesdeMat;
    }

    public Date getFechaHastaMat() {
        return fechaHastaMat;
    }

    public void setFechaHastaMat(Date fechaHastaMat) {
        this.fechaHastaMat = fechaHastaMat;
    }

    public Date getFechaDesdeCon() {
        return fechaDesdeCon;
    }

    public void setFechaDesdeCon(Date fechaDesdeCon) {
        this.fechaDesdeCon = fechaDesdeCon;
    }

    public Date getFechaHastaCon() {
        return fechaHastaCon;
    }

    public void setFechaHastaCon(Date fechaHastaCon) {
        this.fechaHastaCon = fechaHastaCon;
    }

    public Date getFechaActaFinal() {
        return fechaActaFinal;
    }

    public void setFechaActaFinal(Date fechaActaFinal) {
        this.fechaActaFinal = fechaActaFinal;
    }

    public Date getFechaFichaTec() {
        return fechaFichaTec;
    }

    public void setFechaFichaTec(Date fechaFichaTec) {
        this.fechaFichaTec = fechaFichaTec;
    }

    public Date getFechaAdmision() {
        return fechaAdmision;
    }

    public void setFechaAdmision(Date fechaAdmision) {
        this.fechaAdmision = fechaAdmision;
    }

    public Date getFechaCingreso() {
        return fechaCingreso;
    }

    public void setFechaCingreso(Date fechaCingreso) {
        this.fechaCingreso = fechaCingreso;
    }

    public Date getFechaDesdeRes() {
        return fechaDesdeRes;
    }

    public void setFechaDesdeRes(Date fechaDesdeRes) {
        this.fechaDesdeRes = fechaDesdeRes;
    }

    public Date getFechaHastaRes() {
        return fechaHastaRes;
    }

    public void setFechaHastaRes(Date fechaHastaRes) {
        this.fechaHastaRes = fechaHastaRes;
    }

    public Integer getCoPeriodo() {
        return coPeriodo;
    }

    public void setCoPeriodo(Integer coPeriodo) {
        this.coPeriodo = coPeriodo;
    }

    public String getPeriodoAnterior() {
        return periodoAnterior;
    }

    public void setPeriodoAnterior(String periodoAnterior) {
        this.periodoAnterior = periodoAnterior;
    }

    public String getPeriodoSiguiente() {
        return periodoSiguiente;
    }

    public void setPeriodoSiguiente(String periodoSiguiente) {
        this.periodoSiguiente = periodoSiguiente;
    }

    public String getMes01() {
        return mes01;
    }

    public void setMes01(String mes01) {
        this.mes01 = mes01;
    }

    public String getMes02() {
        return mes02;
    }

    public void setMes02(String mes02) {
        this.mes02 = mes02;
    }

    public String getMes03() {
        return mes03;
    }

    public void setMes03(String mes03) {
        this.mes03 = mes03;
    }

    public String getMes04() {
        return mes04;
    }

    public void setMes04(String mes04) {
        this.mes04 = mes04;
    }

    public String getAnrPeriodo() {
        return anrPeriodo;
    }

    public void setAnrPeriodo(String anrPeriodo) {
        this.anrPeriodo = anrPeriodo;
    }

    public String getResolucionPdi() {
        return resolucionPdi;
    }

    public void setResolucionPdi(String resolucionPdi) {
        this.resolucionPdi = resolucionPdi;
    }

    public Boolean getOrdinario() {
        return ordinario;
    }

    public void setOrdinario(Boolean ordinario) {
        this.ordinario = ordinario;
    }

    public String getActivo() {
        return activo;
    }

    public void setActivo(String activo) {
        this.activo = activo;
    }

    public String getCreacionUsuario() {
        return creacionUsuario;
    }

    public void setCreacionUsuario(String creacionUsuario) {
        this.creacionUsuario = creacionUsuario;
    }

    public String getCreacionEstacion() {
        return creacionEstacion;
    }

    public void setCreacionEstacion(String creacionEstacion) {
        this.creacionEstacion = creacionEstacion;
    }

    public Date getCreacionFecha() {
        return creacionFecha;
    }

    public void setCreacionFecha(Date creacionFecha) {
        this.creacionFecha = creacionFecha;
    }

    public String getControlUsuario() {
        return controlUsuario;
    }

    public void setControlUsuario(String controlUsuario) {
        this.controlUsuario = controlUsuario;
    }

    public String getControlEstacion() {
        return controlEstacion;
    }

    public void setControlEstacion(String controlEstacion) {
        this.controlEstacion = controlEstacion;
    }

    public Date getControlFecha() {
        return controlFecha;
    }

    public void setControlFecha(Date controlFecha) {
        this.controlFecha = controlFecha;
    }

    public Date getFechaHastaAdm() {
        return fechaHastaAdm;
    }

    public void setFechaHastaAdm(Date fechaHastaAdm) {
        this.fechaHastaAdm = fechaHastaAdm;
    }

    public Date getFechaDesdeAdm() {
        return fechaDesdeAdm;
    }

    public void setFechaDesdeAdm(Date fechaDesdeAdm) {
        this.fechaDesdeAdm = fechaDesdeAdm;
    }

    public Collection<CarrerasCreditos> getCarrerasCreditosCollection() {
        return carrerasCreditosCollection;
    }

    public void setCarrerasCreditosCollection(Collection<CarrerasCreditos> carrerasCreditosCollection) {
        this.carrerasCreditosCollection = carrerasCreditosCollection;
    }

    public Collection<PeriodosSecciones> getPeriodosSeccionesCollection() {
        return periodosSeccionesCollection;
    }

    public void setPeriodosSeccionesCollection(Collection<PeriodosSecciones> periodosSeccionesCollection) {
        this.periodosSeccionesCollection = periodosSeccionesCollection;
    }

    public Collection<CursosCarreras> getCursosCarrerasCollection() {
        return cursosCarrerasCollection;
    }

    public void setCursosCarrerasCollection(Collection<CursosCarreras> cursosCarrerasCollection) {
        this.cursosCarrerasCollection = cursosCarrerasCollection;
    }

    public Institucion getInstitucion1() {
        return institucion1;
    }

    public void setInstitucion1(Institucion institucion1) {
        this.institucion1 = institucion1;
    }

    public EstadoRegistros getEstadoRegistros() {
        return estadoRegistros;
    }

    public void setEstadoRegistros(EstadoRegistros estadoRegistros) {
        this.estadoRegistros = estadoRegistros;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (periodosPK != null ? periodosPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Periodos)) {
            return false;
        }
        Periodos other = (Periodos) object;
        if ((this.periodosPK == null && other.periodosPK != null) || (this.periodosPK != null && !this.periodosPK.equals(other.periodosPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return this.descripcion ;
    }

}
